package xyccontroller

import (
	"Cgo/common"
	"Cgo/front/models"
	"strconv"

	"github.com/gin-gonic/gin"
)

func XycAddressController(r *gin.RouterGroup) {
	r.GET("/findAddressByUserId", common.HandlerFunc(findAddressByUserId))
	r.POST("/updateAddress", common.HandlerFunc(updateAddress))
	r.DELETE("/deleteAddress", common.HandlerFunc(deleteAddress))
	r.POST("/addAddress", common.HandlerFunc(addAddress))
}

// 根据userId查询地址列表，根据id查询某个地址详情
// @Summary 获取地址列表
// @description 根据userId查询地址列表，根据id查询某个地址详情
// @Tags xyc_shop前台接口
// @Accept json
// @Produce json
// @Param userId query int true "用户id"
// @Param id query int false "地址id"
// @Success 200 {object} common.RT[[]models.XycAddress]
// @Router /front/xyc/address/findAddressByUserId [get]
func findAddressByUserId(c *gin.Context) common.Result {
	userIdStr := c.Query("userId")
	idStr := c.Query("id")
	userId, _ := strconv.Atoi(userIdStr)
	id, _ := strconv.Atoi(idStr)
	address, err := AddressDao.FindAddressByUserIdDao(userId, id)
	if err != nil {
		return common.R.Fail(err.Error())
	}
	return common.R.Success(address)
}

// 更新地址
// @Summary 更新地址
// @description 更新地址
// @Tags xyc_shop前台接口
// @Accept json
// @Produce json
// @Param address body models.XycAddress true "地址信息"
// @Success 200 {object} common.RT[string]
// @Router /front/xyc/address/updateAddress [post]
func updateAddress(c *gin.Context) common.Result {
	var address models.XycAddress
	err := c.ShouldBind(&address)
	if err != nil {
		return common.R.Fail(err.Error())
	}
	err = AddressDao.UpdateAddressDao(address)
	if err != nil {
		return common.R.Fail(err.Error())
	}
	return common.R.Success("更新成功")
}

// 删除地址
// @Summary 删除地址
// @description 删除地址
// @Tags xyc_shop前台接口
// @Accept json
// @Produce json
// @Param id query int true "地址id"
// @Success 200 {object} common.RT[string]
// @Router /front/xyc/address/deleteAddress [delete]
func deleteAddress(c *gin.Context) common.Result {
	idStr := c.Query("id")
	id, _ := strconv.Atoi(idStr)
	err := AddressDao.DeleteAddressDao(id)
	if err != nil {
		return common.R.Fail(err.Error())
	}
	return common.R.Success("删除成功")
}

// 新增地址
// @Summary 新增地址
// @description 新增地址
// @Tags xyc_shop前台接口
// @Accept json
// @Produce json
// @Param address body models.XycAddress true "地址信息"
// @Success 200 {object} common.RT[string]
// @Router /front/xyc/address/addAddress [post]
func addAddress(c *gin.Context) common.Result {
	var address models.XycAddress
	err := c.ShouldBind(&address)
	if err != nil {
		return common.R.Fail(err.Error())
	}
	err = AddressDao.AddAddressDao(address)
	if err != nil {
		return common.R.Fail(err.Error())
	}
	return common.R.Success("添加成功")
}
